package view;

import dao.AdminDAO;
import model.Admin;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 * 管理员登录界面类，提供管理员登录功能
 */
public class AdminLoginFrame extends JFrame {
    private JTextField adminNameField;    // 管理员名称输入框
    private JPasswordField passwordField;  // 密码输入框
    private JButton loginButton;          // 登录按钮
    private AdminDAO adminDAO;            // 管理员数据访问对象

    /**
     * 构造方法，初始化管理员登录界面
     */
    public AdminLoginFrame() {
        adminDAO = new AdminDAO();

        // 设置窗口标题和大小
        setTitle("在线购物系统 - 管理员登录");
        setSize(400, 300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);

        // 创建面板并设置布局
        JPanel panel = new JPanel();
        panel.setLayout(new GridLayout(3, 2, 10, 10));
        panel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));

        // 创建管理员名称标签和输入框
        JLabel adminNameLabel = new JLabel("管理员名称:");
        adminNameField = new JTextField();

        // 创建密码标签和输入框
        JLabel passwordLabel = new JLabel("密码:");
        passwordField = new JPasswordField();

        // 创建登录按钮并添加事件监听器
        loginButton = new JButton("登录");
        loginButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String adminName = adminNameField.getText().trim();
                String password = new String(passwordField.getPassword());

                if (adminName.isEmpty() || password.isEmpty()) {
                    JOptionPane.showMessageDialog(AdminLoginFrame.this, "管理员名称和密码不能为空！", "错误", JOptionPane.ERROR_MESSAGE);
                    return;
                }

                // 验证管理员登录
                Admin admin = adminDAO.validateAdminLogin(adminName, password);
                if (admin != null) {
                    // 登录成功，跳转到管理员主界面
                    dispose(); // 关闭登录界面
                    new AdminMainFrame(admin); // 打开管理员主界面
                } else {
                    JOptionPane.showMessageDialog(AdminLoginFrame.this, "管理员名称或密码错误！", "错误", JOptionPane.ERROR_MESSAGE);
                }
            }
        });

        // 将组件添加到面板
        panel.add(adminNameLabel);
        panel.add(adminNameField);
        panel.add(passwordLabel);
        panel.add(passwordField);
        panel.add(loginButton);

        // 将面板添加到窗口
        add(panel);

        // 显示管理员登录界面
        setVisible(true);
    }

    public static void main(String[] args) {
        // 创建并显示管理员登录界面
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new AdminLoginFrame().setVisible(true);
            }
        });
    }
}